この項では、次のキャッシュ・グループ属性について説明します。
AUTOREFRESH属性は、READONLYおよびUSERMANAGEDキャッシュ・グループで使用します。
AUTOREFRESHは、変更をOracleデータベースからTimesTenキャッシュに自動的に適用します。デフォルトでは、READONLYキャッシュ・グループのAUTOREFRESH INCREMENTALのSTATEはONに設定されています。この属性は、USERMANAGEDキャッシュ・グループでは明示的に有効にする必要があります。また、この属性は、SYNCHRONOUS WRITETHROUGHおよびASYNCHRONOUS WRITETHROUGHキャッシュ・グループでは禁止されています。
TimesTenでは、2つのAUTOREFRESHモードがサポートされています。
AUTOREFRESHをINCREMENTALモードで使用すると、Oracleへの更新ごとにキャッシュ・グループをリフレッシュするために、追加のオーバーヘッドが発生します。AUTOREFRESHをFULLモードで使用すると、追加のオーバーヘッドは発生しません。
CREATE CACHE GROUP文を使用してキャッシュ・グループを作成する前に、データ・ストアのキャッシュ・エージェントを起動する必要があります。詳細は、「キャッシュ・エージェントの起動および停止」を参照してください。
CREATE CACHE GROUP文を使用してキャッシュ・グループを作成する場合、AUTOREFRESHを指定できます。キャッシュ・グループの作成後、ALTER CACHE GROUPを使用して、MODE、STATE、INTERVALの設定を変更できます。ただし、AUTOREFRESHを設定せずに作成されたキャッシュ・グループに対して、ALTER CACHE GROUPを使用してAUTOREFRESHをインスタンス化することはできません。
AUTOREFRESHの実行頻度はそのINTERVAL値で決まります。デフォルトでは、5 MINUTESです。CREATE CACHE GROUPまたはALTER CACHE GROUP文を使用して、STATEをONまたはOFFに設定することで、AUTOREFRESHを有効または無効にできます(デフォルトはON)。STATEがONに設定されているトランザクションをコミットすると、TimesTenによってAUTOREFRESHがスケジュールされます。
STATEがOFFに設定されている場合、Oracle表への変更は取得も記録もされません。また、ALTER CACHE GROUP文を使用して、STATEをPAUSEDに設定できます。キャッシュ・グループがPAUSEDの場合、Oracle表への変更は、Oracleでは取得および記録されますが、TimesTenキャッシュ・グループの表には適用されません。
AUTOREFRESHをINCREMENTALモードで使用すると、Oracleで行われた変更は、変更ログ表に保持されます。特定の環境下では、トランザクション内のレコードの一部が、TimesTenキャッシュ・グループに適用される前に変更ログ表からパージされる可能性があります。このような状況が発生すると、Cache Connect to Oracleはキャッシュ・グループの完全自動リフレッシュを開始します。レコードが変更ログ表からパージされる原因については、『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』の変更ログ表のサイズ変更に関する項を参照してください。
AUTOREFRESHを使用する場合は、次の制限が適用されます。
AUTOREFRESHを使用するUSERMANAGEDキャッシュ・グループの例は、例2.12を参照してください。
DURATION属性は、USERMANAGEDキャッシュ・グループでのみ使用します。
DURATIONは最後のロードまたはリフレッシュ以降の経過時間(分)を示します。この時間をすぎると、キャッシュ・グループのインスタンスはエージ・アウトされる可能性があります。つまり、キャッシュ・インスタンスを表す行は、ロードまたはリフレッシュされずに、DURATIONに指定された時間(分)キャッシュに存続した場合、TimesTenから自動的に削除される可能性があります。
たとえば、キャッシュ・グループのDURATIONが20の場合、インスタンスがキャッシュ・グループにロードされても、その直後から20分後にはキャッシュ・グループから削除される可能性があります。ただし、実際の時間はより長い可能性があります。
DURATIONを使用するには、キャッシュ・グループを保持するデータ・ストアのキャッシュ・エージェントを起動する必要があります(「キャッシュ・エージェントの起動および停止」を参照)。
DURATIONは、キャッシュ・グループ全体または特定のキャッシュ・インスタンスに対して設定できます。キャッシュ・グループ全体のデフォルトの存続時間は、CREATE CACHE GROUP文のDURATION属性によって設定します。CREATE CACHE GROUPのDURATION句を省略すると、キャッシュ・グループはインスタンスをエージ・アウトしません。また、エージングを後で有効にすることもできません。CREATE CACHE GROUP文で設定したデフォルトの存続時間は、LOAD CACHE GROUPまたはREFRESH CACHE GROUP文にDURATION句を指定することによって、特定のインスタンスに対して後で上書きできます(「キャッシュ・グループのロードおよびリフレッシュ」を参照)。
エージングは、キャッシュが組込みプロシージャttCacheAgingMemoryThresholdSetで指定したメモリーのしきい値に達した場合にのみ発生します。デフォルトの設定は0%であるため、デフォルトでは、キャッシュ内のデータの量に関係なくエージングが発生します。
TimesTenエージング・プロセスによって、5分ごとにエージングが開始されます。この時間隔は、組込みプロシージャttCacheAgingIntervalSetをコールして変更できます。
エージングの詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』を参照してください。
DURATIONを使用する場合は、次の制限が適用されます。
DURATIONを使用するUSERMANAGEDキャッシュ・グループの例は、例2.12を参照してください。